The general term “MRAM” refers to a non-volatile semiconductor memory which utilizes a change in the resistance of the barrier layer depending on the direction of magnetization of the ferromagnetic material. A memory cell of an MRAM comprises a magnetic tunnel junction (MTJ) resistive element and a transistor. A lower electrode contact plug (referred to as a lower contact plug hereinafter) is formed on one diffusion layer of the transistor, and an MTJ element is formed on the lower contact plug.